This invention relates to the interoperation of networked computers and more particularly to a distributed operating system for a cluster of computer nodes.
A node is a computer which is composed of one or more computational processors (potentially a SMP--Symmetrical Multi-Processor), local memory, an Input/Output subsystem, and optional peripheral devices. Hence, a cluster is a set of two or more nodes that cooperate at some level to solve a problem. The nodes within a cluster may be interconnected using a variety of software and hardware solutions depending upon the price-performance requirements. Depending upon how a cluster is implemented--shared memory or message passing--a cluster can provide the following capabilities: high availability since no single point of failure mandates halting a distributed application, application load-leveling to increase or more efficiently utilize cluster-wide resources, hardware sharing, increased aggregate computational and I/O bandwidth, increased access to resources such as mass storage, networking, etc.
STREAMS is a relatively light-weight message-passing framework that has become a deface standard for implementing networking protocols and client/server applications/services upon. The conventional STREAMS mechanism is described in UNIX System V Network Programming, S. A. Rago (1993), Ch. 3 and 9. For example, NFS, UDP/IP, TCP/IP, SPX, NetBIOS, SNA, and DLPI all define networking protocols which have been implemented by a number of vendors utilizing the STREAMS framework. Applications based on these protocols and services should be able to take advantage of what a cluster has to offer if clustering is to be successful.
Accordingly, a need remains to modify the STREAMS framework to comprehend cluster infrastructure needs and to facilitate applications and cluster facilities executing within this environment.